<?php
/*
Copyright (C) 2009 de Flotte Maxence

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
?>
<?php
/**
 * @author de Flotte Maxence <xamax87@gmail.com>
 * @package std
 * @version 1.0
 */


/**
 * Creer/Modifie les droit de créations d'enfant d'un label
 * @package	std
 * @param	int		$lid			Identifiant du label
 * @param	string	$type			Type du label enfant
 * @param	bool		$user			Definie le droit ou non de création d'enfant pour le propriétaire du label. Si null il sera non changé
 * @param	int		$groupId		Identifiant du groupe ayant le droit d'ajouter des enfants. 0 on souhaite qu'aucun groupe ne soit defini. Null si on ne veux pas le modifier.
 * @param	bool		$other		Définie si n'importe quel utilisateur a le droit de créer un enfant. Null si on ne veux pas le modifier.
 * @return	bool						Retourne true en cas de succès, false dans le cas contraire
 */
function setAutoCreateChildsPermissions($lid,$type,$user,$groupId,$other) {
	
	//Des droits sont il déjà defini

		$rulesAreDefined = false; //Par défaut aucun droits n'est défini
		
		//Requête SQL
		$request = ZzSQL::queryFirst('SELECT COUNT(*) AS count FROM '.$GLOBALS['prefix'].'_autocreate_childs_permissions WHERE id = ? AND type = ?',array($lid,$type));
		if($request != null)
			if($request['count'] == 1)
				$rulesAreDefined = true;
				
	//Si on demande une interdiction complete
		if($user === false and $groupId === 0 and $other === false)
			$removeEntry = true;
		else
			$removeEntry = false;
		
		
	//Si aucun droit n'est defini alors $user, $groupId, et $other ne peuvent être vide
		if(!$rulesAreDefined) {
			if(is_null($user))
				$user = 0;
			if(is_null($groupId))
				$groupId = 0;
			if(is_null($other))
				$other = 0;
		}
		
	//On forme la requête
		$args = array();
		if(!$removeEntry) {
			$addreq = '';
			if(!is_null($user)) {
				$addreq .= $user.',';
				if(isSet($upreq))
					$upreq .= ',';
				else
					$upreq = '';
				$upreq .= 'user = ?';
				$args[] = $user;
			}
			if(!is_null($groupId)) {
				$addreq .= $groupId.',';
				if(isSet($upreq))
					$upreq .= ',';
				else
					$upreq = '';
				$upreq .= 'group = ?';
				$args[] = $groupId;
			}
			if(!is_null($other)) {
				$addreq .= $other;
				if(isSet($upreq))
					$upreq .= ',';
				else
					$upreq = '';
				$upreq .= 'other = ?';
				$args[] = $other;
			}
			
			if($rulesAreDefined) { //On modifie une règle 
				$req = 'UPDATE '.$GLOBALS['prefix'].'_autocreate_childs_permissions SET '.$upreq.' WHERE id = ? AND type = ?;';
				$args[] = $lid;
				$args[] = $type;
			}
			else { //On créé une nouvelle règle
				$req = 'INSERT INTO '.$GLOBALS['prefix'].'_autocreate_childs_permissions VALUES(?,?,?,?,?);';
				$args = array($lid,$type,$user,$groupId,$other);
			}
		}
		else
			if($rulesAreDefined) { //Aucune règles n'est nécéssaire
				$req = 'DELETE '.$GLOBALS['prefix'].'_autocreate_childs_permissions WHERE id = ? AND type = ?;';
				$args = array($lid,$type);
			}
			else //Il n'y a pas de règles défini et on n'a pas de règle à definir
				return true;
		
		
		
	//On effect
	if(ZzSQL::exec($req,$args) == 0)
		return false;
	
	return true;
	
}

?>